/*  ----------------------------------------------------------------------------
 *  Arello Mobile
 *  Fast 3d Engine
 *  ----------------------------------------------------------------------------
 * Except where otherwise noted, this work is licensed under
 * http://creativecommons.org/licenses/by/3.0
 */

#ifndef __INPUT_HARD_MACX_MOUSE_H__
#define __INPUT_HARD_MACX_MOUSE_H__

#include <input/hard/Hardware.h>
#include <input/Manager.h>
#include <NoCopy.h>

namespace liba
{
namespace input
{
namespace hard
{
namespace macx
{

class Mouse : public Hardware, private Nocopy
{
public:
	virtual std::string get_name()const;
	virtual Atom get_type()const
	{
		return Manager::mouse_type_name;
	}

	void mouse_move( int x, int y );
	void mouse_up( int key );
	void mouse_down( int key );
	void resize(int height, int width);

	virtual double get_axis_position( const std::string & axis_name )const;
	virtual Manager::AxisType get_axis_type( const std::string & axis_name )const;

	Mouse(const std::string & name);
	virtual ~Mouse();
private:
	int mouse_x, mouse_y;
	int old_mouse_x, old_mouse_y;
	double height, width;
	bool left_button_down;
	bool right_button_down;
	
	std::string mouse_name;
};

} // namespace macx
} // namespace hard
} // namespace input
} // namespace liba
using namespace liba;


#endif //__INPUT_HARD_MACX_MOUSE_H__

